//#include<iostream>
//using namespace std;
//class dat;
//class stack
//{
//public:
//	friend void print2(const stack& s);
//	friend class dat;
//	//stack(int capacity = 0, int top = 0)
//	//{
//	//	_arry = nullptr;
//	//	_capacity = 4;
//	//	_top = top;
//	//}
//	stack()
//		:_capacity(4)
//		, _top(0)
//		, _arry(nullptr)
//		//,_a(0)
//	{
//		cout << 666 << endl;
//		count++;
//	}
//	void print()
//	{
//		cout << count << endl;
//
//	}
//	stack( const stack& s)
//	{
//		_arry = s._arry;
//		_capacity = s._capacity;
//		_top = s._top;
//		count++;
//	}
//	~stack()
//	{
//		free(_arry);
//		_arry = nullptr;
//		_top = 0;
//		_capacity = 0;
//	}
//private:
//	int* _arry;
//	int _capacity;
//	int _top;
//	//const int _a=1;
//	static int count;
//};
//class dat
//{
//public:
//	friend class stack;
//	dat(int x=9,int y=9)
//	{
//		a = x;
//		b = y;
//	}
//	void print3(const stack& ss)
//	{
//		cout << a << endl;
//		cout << b << endl;
//		cout << ss._capacity <<1111111 <<endl;
//	}
//private:
//	int a;
//	int b;
//};
//int stack::count = 0;
//void print2(const stack& s)
//{
//	cout << s._capacity << endl;
//}
//int main()
// {
//	stack s1;
//    stack s2(s1);
//	dat d(1,2);
//	d.print3(s1);
//	//s1.print4(d);
//	//d.print3();
//	//s1.print();
//	//s2.print();
//	//print2(s1);
//	return 0;
//}

#include<iostream>
using namespace std;
class B;
class A
{
public:
	A(int a1 = 1, int a2 = 2)
	{
		_a1 = a1;
		_a2 = a2;
	}
	void Func1()
	{
		cout << _a1 << " " << _a2 << endl;
	}
	void print(const B& bb);
private:
	int _a1;
	int _a2;
};
class B
{
public:
	friend class A;
	B(int b1 = 3, int b2 = 4)
	{
		_b1 = b1;
		_b2 = b2;
	}
private:
	int _b1;
	int _b2;
};
void A::print(const B& dd)
{
	cout << dd._b1 << "hello" << endl;
}
int main()
{
	A a;
	B b;
	a.print(b);
	return 0;
}